// 模型配置管理页面端到端测试
describe('模型配置管理', () => {
  beforeEach(() => {
    cy.login();
    cy.visit('/model-configs');
    cy.waitForLoading();
  });

  it('应该正确显示模型配置列表', () => {
    // 验证页面标题
    cy.shouldHavePageTitle('模型配置管理');
    
    // 验证表格显示
    cy.getTableRows().should('have.length.greaterThan', 0);
    
    // 验证搜索功能
    cy.searchInTable('OpenAI');
    cy.shouldHaveTableRow('OpenAI');
    
    // 验证刷新功能
    cy.refreshTable();
    cy.waitForLoading();
    cy.getTableRows().should('have.length.greaterThan', 0);
  });

  it('应该能够创建新的模型配置', () => {
    // 点击创建按钮
    cy.get('[data-cy="create-config-button"]').click();
    
    // 验证模态框显示
    cy.shouldHaveModal('创建模型配置');
    
    // 填写表单
    const testData = cy.getTestData().modelConfig;
    cy.fillForm({
      'name': testData.name,
      'provider': testData.provider,
      'model': testData.model,
      'apiKey': testData.apiKey,
      'apiEndpoint': testData.apiEndpoint,
      'maxTokens': testData.maxTokens,
      'temperature': testData.temperature,
      'maxConcurrency': testData.maxConcurrency,
      'costPer1kTokens': testData.costPer1kTokens,
      'isActive': testData.isActive,
    });
    
    // 提交表单
    cy.get('[data-cy="submit-button"]').click();
    
    // 验证成功消息
    cy.shouldHaveSuccessMessage('模型配置创建成功');
    
    // 验证跳转到列表页
    cy.url().should('include', '/model-configs');
  });

  it('应该能够测试模型配置连接', () => {
    // 点击测试连接按钮
    cy.clickTableActionButton(0, '测试连接');
    
    // 验证测试结果显示
    cy.shouldHaveSuccessMessage('连接测试成功');
  });

  it('应该能够验证模型配置参数', () => {
    // 点击创建按钮
    cy.get('[data-cy="create-config-button"]').click();
    
    // 输入无效参数
    cy.fillForm({
      'temperature': 2.5, // 超出范围
      'maxTokens': 0, // 无效值
    });
    
    // 验证验证错误
    cy.shouldHaveFormError('[data-cy="temperature-field"]', '温度值必须在0-2之间');
    cy.shouldHaveFormError('[data-cy="maxTokens-field"]', '最大令牌数必须大于0');
  });

  it('应该能够查看模型配置详情', () => {
    // 点击详情按钮
    cy.clickTableActionButton(0, '详情');
    
    // 验证详情页面显示
    cy.shouldHavePageTitle('模型配置详情');
    cy.get('[data-cy="config-detail-name"]').should('be.visible');
    cy.get('[data-cy="config-detail-provider"]').should('be.visible');
    
    // 验证统计信息显示
    cy.get('[data-cy="usage-stats"]').should('be.visible');
    
    // 返回列表
    cy.get('[data-cy="back-button"]').click();
    cy.url().should('include', '/model-configs');
  });

  it('应该能够克隆模型配置', () => {
    // 点击克隆按钮
    cy.clickTableActionButton(0, '克隆');
    
    // 验证克隆模态框显示
    cy.shouldHaveModal('克隆模型配置');
    
    // 修改名称
    cy.get('[data-cy="name-field"] input').clear().type('克隆的模型配置');
    
    // 提交克隆
    cy.get('[data-cy="submit-button"]').click();
    
    // 验证成功消息
    cy.shouldHaveSuccessMessage('模型配置克隆成功');
    
    // 验证克隆的数据显示
    cy.shouldHaveTableRow('克隆的模型配置');
  });

  it('应该能够导出模型配置', () => {
    // 点击导出按钮
    cy.get('[data-cy="export-button"]').click();
    
    // 选择导出格式
    cy.selectDropdownItem('[data-cy="export-menu"]', 'JSON');
    
    // 验证文件下载
    cy.readFile('cypress/downloads/model-configs.json').should('exist');
  });

  it('应该能够批量导入模型配置', () => {
    // 点击导入按钮
    cy.get('[data-cy="import-button"]').click();
    
    // 验证导入模态框显示
    cy.shouldHaveModal('导入模型配置');
    
    // 上传文件
    cy.uploadFile('[data-cy="file-input"]', 'test-configs.json', 'application/json');
    
    // 确认导入
    cy.get('[data-cy="submit-button"]').click();
    
    // 验证导入结果
    cy.shouldHaveSuccessMessage('模型配置导入成功');
  });

  it('应该能够查看使用统计', () => {
    // 点击统计按钮
    cy.clickTableActionButton(0, '统计');
    
    // 验证统计页面显示
    cy.shouldHavePageTitle('使用统计');
    
    // 验证图表显示
    cy.get('[data-cy="usage-chart"]').should('be.visible');
    cy.get('[data-cy="cost-chart"]').should('be.visible');
    
    // 验证统计数据
    cy.get('[data-cy="total-requests"]').should('be.visible');
    cy.get('[data-cy="total-cost"]').should('be.visible');
    cy.get('[data-cy="average-response-time"]').should('be.visible');
  });

  it('应该能够设置默认配置', () => {
    // 点击设为默认按钮
    cy.clickTableActionButton(0, '设为默认');
    
    // 确认设置
    cy.confirmModal();
    
    // 验证成功消息
    cy.shouldHaveSuccessMessage('默认配置设置成功');
    
    // 验证默认标记显示
    cy.getTableRows().first().should('contain', '默认');
  });

  it('应该能够管理配置版本', () => {
    // 点击版本管理按钮
    cy.clickTableActionButton(0, '版本管理');
    
    // 验证版本管理页面显示
    cy.shouldHavePageTitle('版本管理');
    
    // 验证版本列表显示
    cy.get('[data-cy="version-list"]').should('be.visible');
    
    // 创建新版本
    cy.get('[data-cy="create-version-button"]').click();
    cy.get('[data-cy="version-description"]').type('性能优化版本');
    cy.get('[data-cy="submit-button"]').click();
    
    // 验证版本创建成功
    cy.shouldHaveSuccessMessage('版本创建成功');
  });

  it('应该能够监控配置性能', () => {
    // 点击性能监控按钮
    cy.clickTableActionButton(0, '性能监控');
    
    // 验证监控页面显示
    cy.shouldHavePageTitle('性能监控');
    
    // 验证实时监控数据
    cy.get('[data-cy="real-time-metrics"]').should('be.visible');
    
    // 验证性能图表
    cy.get('[data-cy="response-time-chart"]').should('be.visible');
    cy.get('[data-cy="throughput-chart"]').should('be.visible');
    
    // 验证告警信息
    cy.get('[data-cy="alerts"]').should('be.visible');
  });
});